SOA Rides Again with Microservices and Containers in the Cloud
Service-oriented architecture (SOA) and web services were hot developer trends a decade ago but may only get a yawn today. Now, microservices take the concept into the cloud and container era.
If you missed the SOA and web services hoopla, and haven’t worked with microservices here’s a brief explanation from Wikipedia:
“Microservices are a software development technique—a variant of the service-oriented architecture (SOA) architectural style that structures an application as a collection of loosely coupled services.”
Microservices and containers are growing in popularity because the modular approach is better suited to today’s dynamic business needs than older programming methodologies with zillions of lines of code.
As Michael Otey explained in an in-depth Redmond Magazine article: “Traditional monolithic applications consist of large executable programs that are complex and can be difficult to deploy and update. In contrast, container-based microservice applications are composed of many small independent services running in containers that enable the organization to deploy and update granular microservices individually without impacting the entire application. This microservice architecture potentially makes these applications more resilient, as well as easier to deploy and update.”
If you want to take a deeper dive into microservices as well as containers, there are resources available to help you get up to speed.
Visual Studio users working with .NET can download a free 340-page eBook from Microsoft, .NET Microservices: Architecture for Containerized .NET Applications. Reading and digesting 340 pages of material is going to be a challenge. The authors offer some Key Takeaways to provide Microsoft’s overview of this way of doing application development.
Making the case for microservices architecture, the authors assert that it is “becoming the preferred approach for distributed and large or complex mission-critical applications based on many independent subsystems in the form of autonomous services. In a microservice-based architecture, the application is built as a collection of services that are developed, tested, versioned, deployed, and scaled independently. Each service can include any related autonomous database.”
For developers who have been working with SOA, this Lego approach to building an application from existing pieces of software may be old hat. One new wrinkle since SOA emerged in 1998, is containers, specifically the Docker technology that was first introduced in 2013. For cloud applications, microservices and containers go together, although containers also have wider utility in the .NET world, as the authors of the Microsoft eBook explain: “Containers are convenient for microservices, but can also be useful for monolithic applications based on the traditional .NET Framework, when using Windows Containers. The benefits of using Docker, such as solving many deployment-to-production issues and providing state-of-the-art Dev and Test environments, apply to many different types of applications.”
As one of the major contributors to the open source container project, Microsoft is pretty much all in with Docker when it comes to microservices architecture. “Docker-based containers are becoming the de facto standard in the industry, supported by key vendors in the Windows and Linux ecosystems, such as Microsoft, Amazon AWS, Google, and IBM. Docker will probably soon be ubiquitous in both the cloud and on-premises datacenters,” the eBook authors write.
But you don’t have to take Microsoft’s word for it. On its website, Docker is touting Forrester Research Inc.’s latest take on the technology, New Wave Enterprise Container Platform, Q4 2018 Report. Docker “leads the pack with a robust container platform well-suited for the enterprise,” the container company says.
“The purpose of Docker is to build containers that hold, potentially, all of the components of an application: the application itself, the database engine, any Web services it requires and so on. That container, unlike a virtual machine, doesn't require an operating system so it takes less space than a VM and starts up/shuts down faster,” explained Peter Vogel, in a recent Visual Studio Magazine article, Understanding Docker Vocabulary.
For those starting out with using containers for their applications, Vogel said there’s good news. “There are a bunch of prepared containers waiting for you to use on Docker Hub: these are called images. Many of them are Linux based, but for .NET Core applications that's not an issue: Core runs as well on Linux as Windows.”
While Docker is given credit for popularizing containers, Vogel notes that when it comes to container orchestration the “elephant in this living room is Kubernetes.”
Enter Kubernetes
Kubernetes, first released in 2015, is an open source container orchestration system developed by Google but also championed by Microsoft.
In his Redmond article on containers referenced above, Otey explained: “Kubernetes provides automated deployment, scaling and operations for containers. It provides a management control plane for containers that works above the container level … Essentially, Kubernetes is used for managing distributed application containers across clusters of physical or virtual machines. It supports a range of different container tools including support for Docker. Kubernetes allows you to combine multiple containers that make up an application into logical groups for easier management. It's designed to enable you to easily deploy, update and scale your applications, as well as optionally limiting hardware utilization.”
The article explained that Kubernetes is the Greek word for helmsman or pilot. For non-Greek speakers who have trouble pronouncing the name, Otey said “Kubernetes is sometimes referred to as K8S, where the eight letters of ubernete are replaced by the number 8.
Visual Studio Live! New Orleans: Cloud, Containers and Microservices
Reading documentation on application development approaches is good but it is hard to beat in-person learning from experts who really know their stuff. Visual Studio Live! in New Orleans, April 22 to 26, is offering a track covering Cloud, Containers and Microservices including:
- Microservice architectures
- Containers 101
- Azure Kubernetes Services
- Azure Active Directory B2C
- Serverless and Azure Functions
- Intelligent apps in the cloud with Azure Cognitive Services
Find out more.
Posted by Richard Seeley on 03/20/2019